﻿/* ********************************************************************************
 * 名称：SysModuleAction_ApplicationService
 * 描述：系统模块方法表  应用服务接口实现类（本类通过CodeSmith软件生成生成）
 * 创建人：HFL
 * 创建日期：2020-06-01 17:48:55
 * 修改人：
 * 修改日期：
 * *******************************************************************************/
using WPay.Application.Base;
using WPay.Application.Interface;
using WPay.Domain.Model.DTOs;
using WPay.Domain.Model.Entities;
using WPay.Domain.MainModule.Interface.DomainServices;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace WPay.Application.MainModule
{
    /// <summary>
    /// 系统模块方法表 应用服务接口实现类
    /// </summary>
    public class SysModuleAction_ApplicationService : ISysModuleAction_ApplicationService
    {
    
        /// <summary>
        /// 系统模块方法表 领域服务接口
        /// </summary>
        private ISysModuleAction_DomainService sysModuleAction_DomainService;
        
        /// <summary>
        /// API交互输出数据包
        /// </summary>
        private Hashtable datas;
        /// <summary>
        /// 带参构造，用于IOC
        /// </summary>
        public SysModuleAction_ApplicationService(ISysModuleAction_DomainService _sysModuleAction_DomainService)
        {
            sysModuleAction_DomainService = _sysModuleAction_DomainService;
        }
        
        #region 由软件生成，禁止修改，若需要扩展，请在下方进行扩展
        /// <summary>
        /// 根据主键获取系统模块方法表资料信息
        /// </summary>
        /// <param name="_iD">编号</param>
        /// <returns>返回API交互数据输出模型</returns>
        public RespDto Get(string _iD)
        {
            SysModuleAction data = this.sysModuleAction_DomainService.Get(_iD);
            
            //封装输出数据模型
            bool isSuccess = data != null;
            datas = new Hashtable();
            datas.Add("Data", data);//输出当前页数据集
            return new RespDto(isSuccess, isSuccess ? 0:200, isSuccess ? "获取数据成功":"获取数据失败", datas);
        }
        
        /// <summary>
        /// 获取所有记录
        /// </summary>
        /// <param name="_cpnID">企业代码</param>
        /// <returns>返回API交互数据输出模型</returns>
        public RespDto GetAll(string _cpnID)
        {
            List<SysModuleAction> list = this.sysModuleAction_DomainService.GetAll(_cpnID);
            
            //封装输出数据模型
            bool isSuccess = list != null;
            datas = new Hashtable();
            datas.Add("DataCount", isSuccess ? list.Count : 0);//输出总数据条数
            datas.Add("DataList", list);//输出当前页数据集
            return new RespDto(isSuccess, isSuccess ? 0:200, isSuccess ? "获取数据成功":"获取数据失败", datas);
        }
        
        /// <summary>
        /// 获取所有记录
        /// </summary>
        /// <param name="_param">查询条件字典，其中key必须使用字段名</param>
        /// <returns>返回API交互数据输出模型</returns>
        public RespDto GetAll(Hashtable _param)
        {
            List<SysModuleAction> list = this.sysModuleAction_DomainService.GetAll(_param);
            
            //封装输出数据模型
            bool isSuccess = list != null;
            datas = new Hashtable();
            datas.Add("DataCount", isSuccess ? list.Count : 0);//输出总数据条数
            datas.Add("DataList", list);//输出当前页数据集
            return new RespDto(isSuccess, isSuccess ? 0:200, isSuccess ? "获取数据成功":"获取数据失败", datas);
        }
        
        /// <summary>
        /// 按照分页条件查询数据集
        /// </summary>
        /// <param name="_param">查询条件字典，其中key必须使用字段名</param>
        /// <param name="_pageIndex">查询页码，从1开始，必传</param>
        /// <param name="_pageSize">每页查询数据条数，必传</param>
        /// <param name="_sort">排序列名，若要降序请用列名+" DESC"，必传</param>
        /// <returns>返回API交互数据输出模型</returns>
        public RespDto GetByPage(Hashtable _param, int _pageIndex, int _pageSize, string _sort)
        {
            int pageCount,dataCount;
            List<SysModuleAction> list = this.sysModuleAction_DomainService.GetByPage(_param, _pageIndex, _pageSize, _sort, out pageCount, out dataCount);
            
            //封装输出数据模型
            bool isSuccess = list != null;
            datas = new Hashtable();
            datas.Add("PageIndex", _pageIndex);//输出当前页码
            datas.Add("PageSize", _pageSize);//输出每页查询条数
            datas.Add("PageCount", pageCount);//输出总页数
            datas.Add("DataCount", dataCount);//输出总数据条数
            datas.Add("PageDataList", list);//输出当前页数据集
            return new RespDto(isSuccess, isSuccess ? 0:200, isSuccess ? "获取数据成功":"获取数据失败", datas);
        }
        
        /// <summary>
        /// 插入系统模块方法表数据
        /// </summary>
        /// <param name="_sysModuleAction">需要插入的系统模块方法表数据实体</param>
        /// <returns>返回API交互数据输出模型</returns>
        public RespDto Add(SysModuleAction _sysModuleAction)
        {
            int count = this.sysModuleAction_DomainService.Add(_sysModuleAction);
            
            //封装输出数据模型
            bool isSuccess = count > 0;
            datas = new Hashtable();
            datas.Add("Count",count);
            return new RespDto(isSuccess, isSuccess ? 0:200, isSuccess ? "新增数据成功":"新增数据失败", datas);
        }
        
        /// <summary>
        /// 批量插入系统模块方法表数据
        /// </summary>
        /// <param name="_sysModuleActionList">需要插入的系统模块方法表数据集合</param>
        /// <returns>返回API交互数据输出模型</returns>
        public RespDto Add(List<SysModuleAction> _sysModuleActionList)
        {
            int count = this.sysModuleAction_DomainService.Add(_sysModuleActionList);
            
            //封装输出数据模型
            bool isSuccess = count > 0;
            datas = new Hashtable();
            datas.Add("Count",count);
            return new RespDto(isSuccess, isSuccess ? 0:200, isSuccess ? "批量新增数据成功":"批量新增数据失败", datas);
        }
        
        /// <summary>
        /// 根据主键更新系统模块方法表数据
        /// </summary>
        /// <param name="_sysModuleAction">需要更新的系统模块方法表数据实体</param>
        /// <returns>返回API交互数据输出模型</returns>
        public RespDto Update(SysModuleAction _sysModuleAction)
        {
            int count = this.sysModuleAction_DomainService.Update(_sysModuleAction);
            //封装输出数据模型
            bool isSuccess = count > 0;            
            datas = new Hashtable();
            datas.Add("Count",count);
            return new RespDto(isSuccess, isSuccess ? 0:200, isSuccess ? "数据更新成功":"数据更新失败", datas);
        }
        
        /// <summary>
        /// 根据主键更新系统模块方法表指定字段
        /// </summary>
        /// <param name="_sysModuleAction">需要更新的系统模块方法表数据实体</param>
        /// <param name="_updateProNames">需要更新的字段名</param>
        /// <returns>返回API交互数据输出模型</returns>
        public RespDto Update(SysModuleAction _sysModuleAction, params string[] _updateProNames)
        {
            int count = this.sysModuleAction_DomainService.Update(_sysModuleAction, _updateProNames);
            //封装输出数据模型
            bool isSuccess = count > 0;            
            datas = new Hashtable();
            datas.Add("Count",count);
            return new RespDto(isSuccess, isSuccess ? 0:200, isSuccess ? "数据更新成功":"数据更新失败", datas);
        }
        
        
        #endregion
        
        /*业务扩展代码*/
        #region 业务扩展代码
        
        #endregion
    }
}
